﻿// 3615. 单词个数统计.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <vector>

using namespace std;
/*
https://www.acwing.com/problem/content/3618/
从键盘输入一行英文句子，句子中只有英文单词和空格，每个单词之间用若个空格隔开，
英文单词由大小写字母组成，编程完成以下任务：

统计并输出此句子中英文字母的个数；
统计并输出此句子中单词的个数；
查找此句子中出现次数最多的字母（不区分大小写，大小写字母是相同的）及次数。
当出现最多的字母不止一个时，全部找到，并输出找到的所有字母及次数。
（输出顺序按字母顺序，且输出时字母全部小写）
输入格式
一行字符串。仅有空格和英文字母构成。

输出格式
第一行输出此句子中英文字母的个数。

第二行输出此句子中单词的个数。

第三行输出出现最多的字母，不止一个时，按字母顺序逐个输出，空格隔开。

第四行输出出现最多的字母的出现次数。

数据范围
输入字符串长度不超过 1000。

输入样例：
This is An Pencil Case
输出样例：
18
5
i s
3
*/

vector<string> strv;
string str;
int letterhash[26];


void solve() {
	int lettercnt = 0;
	int wordcnt = strv.size();
	int maxv = -1;

	for (int i= 0; i < strv.size(); i++) {
		string t = strv[i];
		for (int j = 0; j < t.size(); j++) {
			char c = t[j]; lettercnt++;
			if (c >= 'a' && c <= 'z') {
				letterhash[c - 'a']++;
			}
			else if (c >= 'A' && c <= 'Z') {
				letterhash[c - 'A']++;
			}
		}
	}

	for (int i = 0; i < 26; i++) {
		if (maxv < letterhash[i]) {
			maxv = letterhash[i];
		}
	}

	cout << lettercnt << endl;
	cout << wordcnt << endl;
	for (int i = 0; i < 26; i++) {
		if (maxv == letterhash[i]) {
			cout << char(i + 'a') << " ";
		}
	}
	cout << endl;
	cout << maxv << endl;

}

int main()
{
	while (cin >> str) {
		strv.push_back(str);
	}

	solve();

	return 0;
}

 